package controllers;

import java.util.Set;

import models.Exercicio;
import models.GrupoMuscular;
import models.Medida;
import models.Usuario;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import play.mvc.Security;
import dao.DAOExercicio;
import dao.DAOGrupoMuscular;
import dao.DAOMedida;
import dao.DAOUsuario;

@Security.Authenticated(Seguranca.class)
public class MedidaControle extends Controller {

	private static Form<Medida> formMedida = new Form<Medida>(Medida.class);
	  
    public static Result index() {
        return ok(views.html.medida.index.render(""));
    }
	
	public static Result cadastrarView(){
		
		DAOMedida dao = new DAOMedida();
		try {
			return ok(views.html.medida.cadastrar.render());
		} catch (Exception e) {
			return internalServerError("Erro ao recuperar medida.");
		}

	}
	
	public static Result editarView(int id){
		
		
		DAOMedida dao = new DAOMedida();
		try{
			Medida medida = new Medida();
			medida = dao.select(id);
			return ok(views.html.medida.editar.render(medida));
		}catch(Exception e){
			return internalServerError("Erro ao visualizar medida.");
		}
		
	}
	
	public static Result listarView(){
		DAOMedida dao = new DAOMedida();
		try {
			Set<Medida> Medidas = dao.select();
			return ok(views.html.medida.listar.render(Medidas));
		} catch (Exception e) {
			return internalServerError("Erro ao visualizar Medida.");
		}
		
	}
	
	public static Result cadastrar(){
		Form<Medida> novoMedida = formMedida.bindFromRequest();
		Medida medida = novoMedida.get();
		DAOMedida dao = new DAOMedida();
		try{
			dao.insert(medida);
			
			return listarView();
		}catch(Exception e){
			return ok(views.html.medida.index.render("Erro ao cadastrar medida."));
		}
	}
	
	public static Result editar(){
		Form<Medida> novoMedida = formMedida.bindFromRequest();
		Medida Medida = novoMedida.get();
		DAOMedida dao = new DAOMedida();
		try{
			dao.update(Medida);
			return listarView();
		}catch(Exception e){
			e.printStackTrace();
			return ok(views.html.medida.index.render("Erro ao editar medida."));
		}
		
	}
	
	public static Result remover(){
		Form<Medida> novoMedida = formMedida.bindFromRequest();
		Medida Medida = novoMedida.get();
		DAOMedida dao = new DAOMedida();
		try{
			dao.delete(Medida);
			return ok(views.html.medida.index.render("Medida removida!"));
		}catch(Exception e){
			e.printStackTrace();
			return ok(views.html.medida.index.render("Erro ao remover Medida."));
		}
	}
	
}
